#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>

using namespace std;

typedef pair<int, int> PII;

struct Data{
    Data(int p, int d): p(p), d(d){}
    int p, d;
    bool operator < (const Data &obj) const {
        if(d != obj.d) return d < obj.d;
        return p > obj.p;
    }
};


int main(){
    int n;
    cin >> n;
    vector<Data> arr;
    set<PII> s;
    for(int i = 0, p, d; i < n; i++){
        cin >> p >> d;
        arr.emplace_back(Data(p, d));
    }
    sort(arr.begin(), arr.end());
    // for(int i = 0; i < n; i++){
    //     cout << i << " : " << arr[i].d << ", " << arr[i].p << endl;
    // }
    for(int i = 0; i < n; i++){
        if(arr[i].d > s.size()){
            s.insert(PII(arr[i].p, i));
        }else{
            if(arr[i].p > s.begin()->first){
                s.erase(s.begin());
                s.insert(PII(arr[i].p, i));
            }
        }
    }
    int ans = 0;
    for(auto x : s){
        ans += x.first;
    } 
    cout << ans << endl;

    return 0;
}